/**
 * 页面定制公共事件
 */
export default {
    data() {
        return {
            customCtlName:["customView","CustomColumnView"]
        }
    },
    methods: {
        /**
         * 公共的触发事件 判断是否触发
         * {component: "控件key", params: {传递参数}}
         * @param conf
         */
        handPublicEvent(conf){
            let allow =this.isAllowEvent(conf);
            if(!allow){
                return;
            }
            // 触发事件 需要在控件中去实现handPublicReceive方法
            if(this.handPublicReceive){
                this.handPublicReceive(conf);
            }

        },
        /**
         * 控件是否允许触发事件
         * @param conf  发送组件的配置.
         * @returns {boolean}
         */
        isAllowEvent(eventArgs){
            let config=this.config;
            let pubComponent=eventArgs.component;
            //如果是发布的组件和当前组件相同 则允许触发回填
            if(config && config.backfill && config.backfill.publishComponent==pubComponent){
                return true;
            }
            //如果是发布的组件和当前组件相同 则允许触发
            if(config && config.receive && config.receive.publishComponent==pubComponent){
                return true;
            }
            //如果是自定义的事件 并且发布的组件是当前组件 则允许触发
            if(eventArgs.type=="custom" && this.viewKey==pubComponent){
                return true;
            }
            //如果是自定义的图表 则允许触发
            if(config.reportType=="customChart" ){
                return true;
            }
            let ctlName= this.$options.name;
            //如果是自定义的控件 则允许触发
            if(this.customCtlName.includes(ctlName)){
                return true;
            }

            return false;
        }
    }
}
